Skip to content

Replace developer-cli MCP server with per-command Claude Code skills#875

Merged
tjementum merged 9 commits intomainfrom
pp-1161-replace-developer-cli-mcp-server-with-skills
Apr 30, 2026
Merged

Replace developer-cli MCP server with per-command Claude Code skills#875
tjementum merged 9 commits intomainfrom
pp-1161-replace-developer-cli-mcp-server-with-skills

Conversation

@tjementum
Copy link
Copy Markdown
Member

@tjementum tjementum commented Apr 28, 2026

Summary & Motivation

The custom developer-cli MCP server wrapped the same CLI commands the developer CLI already exposes (build, test, format, lint, run, restart, stop, e2e, send-interrupt-signal). It was the source of recurring bugs - hardcoded ports, Aspire startup races returning misleading success messages, file locking on Windows, worktree-binding gotchas tied to the MCP startup directory - and a recent Claude Code change broke its progress notifications, removing its main remaining benefit. The CLI fallback (dotnet run --project developer-cli -- <command>) already worked correctly and is naturally worktree-aware.

This change drops the MCP server entirely and replaces it with per-command Claude Code skills. Each skill documents the exact CLI invocation, flags, and timing notes so agents pick the right command via skill matching instead of through an MCP tool wrapper.

  • Add seven per-command skills (build, test, format, lint, e2e, aspire-restart, team-interrupt) under .claude/skills/
  • Add a claude-command send-interrupt-signal --team X --agent Y CLI subcommand that writes the agent signal file at ~/.claude/teams/{team}/signals/{agent}.signal and prints the interrupt ID on stdout for the caller to prefix to its follow-up SendMessage
  • Delete developer-cli/Commands/McpCommand.cs (~890 lines), drop the ModelContextProtocol package references from developer-cli/DeveloperCli.csproj, remove the developer-cli entry from .mcp.json, and drop "developer-cli" from enabledMcpjsonServers in .claude/settings.json
  • Update twelve agent docs, AGENTS.md, and the pre-tool-use-bash.sh hook error messages to reference the skills and direct CLI invocation form
  • Delete the now-redundant .claude/hooks/send-interrupt.sh bash equivalent of the new CLI subcommand
  • Make port allocation fully deterministic: PortAllocation.LoadFrom auto-picks the first free base port from [9100, 9200, ..., 9900] for worktrees on first load (root checkout keeps 9000), and the basePort positional argument is removed from pp run and pp restart since .workspace/port.txt is now the single source of truth
  • Clarify the check-interrupt.sh hook reason so an agent that has already processed the matching message ID continues instead of stopping

Checklist

  • I have added tests, or done manual regression tests
  • I have updated the documentation, if necessary

@tjementum tjementum requested a review from a team as a code owner April 28, 2026 14:34
@tjementum tjementum added the Enhancement New feature or request label Apr 28, 2026
@tjementum tjementum self-assigned this Apr 28, 2026
@linear
Copy link
Copy Markdown

linear Bot commented Apr 28, 2026

@tjementum tjementum moved this to 🏗 In Progress in Kanban board Apr 28, 2026
@tjementum tjementum marked this pull request as draft April 28, 2026 14:49
@tjementum tjementum force-pushed the pp-1161-replace-developer-cli-mcp-server-with-skills branch 2 times, most recently from 224f330 to 1a4c638 Compare April 30, 2026 12:31
@github-actions
Copy link
Copy Markdown

Approve Database Migration back-office database on stage

The following pending migration(s) will be applied to the database when approved:

  • Initial (20250217000000_Initial)

Migration Script

CREATE TABLE IF NOT EXISTS __ef_migrations_history (
    migration_id character varying(150) NOT NULL,
    product_version character varying(32) NOT NULL,
    CONSTRAINT pk___ef_migrations_history PRIMARY KEY (migration_id)
);

START TRANSACTION;

DO $EF$
BEGIN
    IF NOT EXISTS(SELECT 1 FROM __ef_migrations_history WHERE "migration_id" = '20250217000000_Initial') THEN
    CREATE TABLE __data_migrations_history (
        migration_id text NOT NULL,
        product_version text NOT NULL,
        executed_at timestamptz NOT NULL,
        execution_time_ms bigint NOT NULL,
        summary text NOT NULL,
        CONSTRAINT pk___data_migrations_history PRIMARY KEY (migration_id)
    );
    END IF;
END $EF$;

DO $EF$
BEGIN
    IF NOT EXISTS(SELECT 1 FROM __ef_migrations_history WHERE "migration_id" = '20250217000000_Initial') THEN
    INSERT INTO __ef_migrations_history (migration_id, product_version)
    VALUES ('20250217000000_Initial', '10.0.7');
    END IF;
END $EF$;
COMMIT;

@tjementum tjementum force-pushed the pp-1161-replace-developer-cli-mcp-server-with-skills branch from 1a4c638 to c6f4388 Compare April 30, 2026 14:38
@sonarqubecloud
Copy link
Copy Markdown

@tjementum tjementum marked this pull request as ready for review April 30, 2026 15:00
@tjementum tjementum merged commit 7f68aae into main Apr 30, 2026
33 of 34 checks passed
@tjementum tjementum deleted the pp-1161-replace-developer-cli-mcp-server-with-skills branch April 30, 2026 15:00
@github-project-automation github-project-automation Bot moved this from 🏗 In Progress to ✅ Done in Kanban board Apr 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Enhancement New feature or request

Projects

Status: ✅ Done

Development

Successfully merging this pull request may close these issues.

1 participant